package cn.xiaolang.function.test_map;

/**
 * TODO
 *
 * @author fuhw/Dean
 * @date 2020-04-23
 */
public class TableSizeTest {

    public static void main(String[] args) {

        // 0010 | 0101 = 0111（7）
        System.out.println(2 | 5);
        // 0010 | 0001 = 0011（3）
        System.out.println(2 | 1);
        // 0010 | 0000 = 0010（2）
        System.out.println(2 | 0);
        // >>>：无符号右移 0011
        System.out.println(3 >>> 2);
        System.out.println(3 >>> 8);
        System.out.println(tableSizeFor(9));
    }


    static final int tableSizeFor(int cap) {
        int n = cap - 1;
        n |= n >>> 1;
        n |= n >>> 2;
        n |= n >>> 4;
        n |= n >>> 8;
        n |= n >>> 16;
        return (n < 0) ? 1 : (n >= 1 << 30) ? 1 << 30 : n + 1;
    }
}
